perm filename NOTICE[UP,DOC]25 blob
sn#070175 filedate 1973-11-02 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00089 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00016 00002 *1969 DDT WFW
C00023 00003 *1 Jan 1972 SAIL Statement Counter Profile RES
C00025 00004 *1 JAN 1972 DO RPH
C00026 00005 *1 JAN 1972 DMAN REG
C00027 00006 *1 JAN 1972 SPOOLER REG
C00028 00007 *1 JAN 1972 RSL SL WHAMS BAMS ETC JHS
C00029 00008 *1 JAN 1972 Keyboard Commands LES
C00030 00009 *FEB 1972 NEW WHO DCS
C00033 00010 *25 Feb 1972 NOTICEs LES
C00035 00011 *29 Feb 1972 "Sticky PPN's" (RPG, COMPILE) DCS
C00036 00012 *2 Mar 1972 CREF Default Listing Device DCS
C00037 00013 *14 Mar 1972 TV "." and <esc>I Features DCS
C00038 00014 *23 Mar 1972 TV for III DCS
C00039 00015 *MAR 1972 LOGOUT REG
C00041 00016 *30 APR 72 FAIL FW
C00042 00017 *3 JUN 1972 RAID DCS
C00049 00018 *4 JUN 1972 NEW DISPLAY EDITOR SRS
C00050 00019 *6 JUN 1972 PUB MANUAL TES
C00063 00020 *14 June 1972 VIDEO SWITCH DOCUMENTATION LES
C00064 00021 *7 July 1972 DOCUMENTATION FILES LES
C00065 00022 *23 JULY 1972 KLOG RHT
C00066 00023 *24 Jul 1972 SAIL DCS,RHT,JRL
C00070 00024 *25 Jul 1972 SPOOLER REG
C00071 00025 *1 Aug 1972 FORTRAN REG
C00072 00026 *9 Aug 1972 DATA DISK FW
C00074 00027 *16 Aug 1972 AP NEWS (APE, HOT) ME
C00076 00028 *16 AUG 1972 SAIL MATRIX ROUTINES PACKAGE SHK
C00078 00029 *30 Aug 1972 UUO SHK
C00079 00030 *4 Sept 1972 AP NEWS (APE, HOT) ME
C00080 00031 *4 SEP 1972 FILDMP RPH
C00081 00032 *4 SEP 1972 NEW SAIL RHT
C00082 00033 *22 SEP 1972 NEW SAIL RHT,JRL,KVL
C00085 00034 *22 Sept 1972 Upper Segment RAID and DDT TVR
C00086 00035 *22 Sept 1972 AP NEWS (APE) ME
C00087 00036 *12 Oct 1972 FAIL TVR
C00088 00037 *21 Oct 1972 SAIL JRL,RHT,KVL
C00091 00038 *3 Nov 1972 USER INTERRUPTS FW
C00092 00039 *3 Nov 1972 VIDEO SWITCH FW
C00093 00040 *8 Nov 1972 DUMPS REG
C00094 00041 *8 Nov 1972 PROTECTION REG
C00095 00042 *11 Nov 1972 SYSTEM REG
C00096 00043 *26 Nov 1972 FTP DCS
C00098 00044 *26 Nov 1972 MLISP2 DAV
C00101 00045 *3 Dec 1972 SAIL RHT
C00104 00046 *12 Dec 72 AP NEWS (APE) ME
C00106 00047 *12 DEC 72 PUB TES
C00108 00048 *9 Jan 1973 NEWS LES
C00110 00049 *23 Jan 73 AP NEWS (APE) ME
C00113 00050 *28 Jan 73 SAIL JRL
C00116 00051 *22 Feb 1973 FAIL FW
C00118 00052 *25 FEB 73 COPY RPH
C00119 00053 *4 MARCH 1973 MLISP DAV
C00121 00054 *5 MARCH 1973 PUB TES
C00127 00055 *9 MARCH 1973 MLISP2 DAV
C00132 00056 *16 March 1973 FREEFOROL processes Text Macros LES
C00133 00057 *21 March 1973 WHERE Command TVR
C00134 00058 *27 March 1973 TV ↔ E switching DCS and FW
C00135 00059 *4 April 1973 TALKER, FTP DCS
C00136 00060 *5 April 1973 PUB TES
C00137 00061 *8 April 1973 APE, AUTOMATIC NOTIFICATION ME
C00139 00062 *9 April 1973 APE, AUTOMATIC NOTIFICATION ME
C00143 00063 *11 APR 1973 INFO REM
C00144 00064 *11 APR 73 XGP REM
C00146 00065 *9 May 1973 FAIL FW
C00148 00066 *19 MAY 1973 MLISP2 DAV
C00149 00067 *22 May 73 MAIL SEND REMIND CANCEL BH
C00150 00068 *1 JUNE 1973 MLISP2 DAV
C00152 00069 *2 Jun 73 MAIL SEND REMIND CANCEL LATER GRIPE BH
C00155 00070 *4 Jun 73 MAIL SEND REMIND LATER CANCEL GRIPE BH
C00156 00071 *19 June 1973 WHOLINE TIME DAYTIME ESCAPE X ESCAPE Q ME
C00164 00072 *2 July 1973 NOTICEs ME
C00165 00073 *12 July 1973 SYSTEM NEWS PROGRAM ME
C00167 00074 *12 July 73 MAIL SEND REMIND RCV BH
C00170 00075 *23 JULY 1973 SAIL RHT JRL HJS KVL
C00181 00076 *25 July 1973 FINGER LES
C00182 00077 *7 Aug 1973 SEND MAIL BH
C00185 00078 *13 Aug 73 RCV BH
C00187 00079 *14 Aug 1973 LOADER and RPG TVR
C00190 00080 *14 Aug 1973 FIND DCS
C00193 00081 *14 Aug 73 PUB XGPUB RKJ
C00197 00082 *5 SEPT 73 NETWORK NETWRK TALKER TELNET FTP RPH
C00198 00083 *5 Sept 1973 FONT conversion for XGP (FCOPY) TVR
C00201 00084 *18 Sept 1973 PUB Command in RPG FW
C00202 00085 *25 SEP 1973 PUB Changes for XGP TES
C00204 00086 *28 Sep 73 FILES command ME
C00208 00087 *29 Oct 1973 RAID FW
C00211 00088 *31 Oct 1973 LOADER FW
C00213 00089 *2 Nov 1973 EDFONT (XGP) TVR
C00215 ENDMK
C⊗;
*1969 DDT WFW
The following changes have been made to DDT:
l. Halfword printout is now of the form A,,B instead
of (A)B. Either form may be used on input. The difference
is that A,,B truncates A to 18 bits before
swapping halves while (A)B does not.
2. $U is a new output mode. It is the same as $A$H.
3. $F mode will now print normalized floating permit
numbers as decimal integers. This means that
FORTRAN users may, in general, use $F to look at
all variables and they will be printed correctly
either fixed or floating.
4. If the address of a string of ASCIZ text is placed
in $nB+3, then whenever breakpoint n is reached,
DDT will act as if the characters in the string were
being read from the teletype. If you are preparing
such a string in advance use either $ or ≠ (≠33 octal)
for altmode.
5. If a bytepointer to an asciz string is placed in
$M-l, DDT will act as if the characters in the string
are being read from the teletype.
6. $$7" <delimiter> characters <delimiter> will act just
like an asciz statement in MACRO or FAIL,i.e.,
more than one word will be filled with asciz for
the characters if necessary. $$" will have a similar
effect but with sixbit.
7. Typing <number>$$P will cause DDT to do an automatic
proceed <number> times instead of forever.
8. When printing in $$ mode, no word will be printed
out as an I/O instruction (COND, DATAO, CONI, etc.)
unless the device number is in a special table. The
table is 10 words long and is in $I-1, $I-2, etc.
Simply put device number here to have the appropriate I/O
instructions printed.
9. If an address is placed in $M-2 then for each character
DDT wishes to output, a pushj 1,@$M-2 will be executed.
This allows output to be redirected to some device
other than the TTY. The character is in register 5. The
routine should preserve all AC's and end with a POPJ l,.
10. In byte mode output ($<number>0), if a size of 0
is specified, DDT will use a special mark in $M+2.
The boundry between 1 and 0 bits specifies the size
of the bytes. For example, a word containing
11111111111 00000000000 11100010110001
would print 2 . 11 bit bytes, 2 3 bit bytes, 2 1 bit
bytes, a 2 bit bytes, a 3 bit byte, and a 1 bit byte.
11. Bytes may be input of $<number>%. This should be
followed by a string of unsigned octal numbers
separated by common and terminated by an altmode. The
number of bytes in a word is not integal the last
byte is treated as if the word were larger
(bit number greater than 35). This makes input compatible
with output. A size of O uses the mark in $M+2
as above.
12. It is now possible to print flag words and T type
instruction (TRUN, TLNN, etc.) with suitable names
for the bit involved. In $M+3 a pointer of the following
form is placed:
_______
| |
_______ | |
$M+3 | L1 | T0 | | Table 0 |
| |
_______
_______
| |
| Table 1 |
| |
_______
_______
| |
| Table 2 |
| |
_______
As many tables as desired may be included. The pointer
to the last table should have 0 in the left half. Each
table contains 36 words. The nth word contains the
RADIX50 for the name of bit n. $<number>J mode will
cause a word to be printed out using the bit names in
table number. If an entry for a bit in 0, the numeric
value will be printed. A typical word might look like
foo! baz! 123,, fool! garp! 2
$J means $0J. $nL causes the left half to be
printed in symbolic and the right half to be printed in
↑STODAT:
bit mode, using the names of the bits as if they appeared
in the left half. $<number>V prints the left half in symbolic
and the right half in bit mode.
13. You can now transfer to what is pointed to by the left half
of a word in the same manner as you transfer using <tab>.
The command is <control>] (≥ on displays).
*1 Jan 1972 SAIL Statement Counter Profile RES
To find out how to get SAIL to give you execution frequency data for
pieces of your program, list NEWMAN[S,AIL].
*1 JAN 1972 DO RPH
Manual is in DO.RPH[S,DOC].
*1 JAN 1972 DMAN REG
Dectape manager (PDP-10 format) -- see DMAN.REG[S,DOC].
*1 JAN 1972 SPOOLER REG
See SPOOL.DOC[S,DOC].
*1 JAN 1972 RSL SL WHAMS BAMS ETC JHS
Service Level Reservation System -- see RSL[S,DOC]
*1 JAN 1972 Keyboard Commands LES
To get a summary of line editor and other Monitor commands, list
KEY.LES[S,DOC).
*FEB 1972 NEW WHO DCS
As of 12-9-71:
1. WHO will run for about two minutes, then quit. You can reset
this time by issuing commands (see below).
2. Typing <call> does not stop spacewar jobs. However, after about
6 seconds of operation after a <call>, the spacewar portion of
WHO will bomb out (PC EXCEEDS MEM BOUNDS AT 377777). This will
be made cleaner if the system types give me some help.
3. WHO commands are now single-character commands. WHO will not wait
for a carriage return before executing one.
4. Previously, many lines of the WHO page were lost below the bottom
of the screen. WHO now provides a "windowing" feature. Type "↑"
to move the text up, so that the line which did appear at the
center of the screen now appears at the top. This reveals several
new lines at the bottom. A digit preceding the "↑" serves as a
repeat factor.
5. The "↓" command, with optional repeat factor, moves the text down
by a half-screenful, unless the first line already is displayed.
6. The "E" command causes WHO to quit. However, the last-drawn screen
will not be cleared. So you can look at it.
7. Any other character will cause WHO to clear the screen (revealing
your old page printer), then quit.
*25 Feb 1972 NOTICEs LES
This file, kept in NOTICE[UP,DOC], is intended to function as a
computerized bulletin board. System programmers and CUSP file
contributors are invited to disseminate information concerning new
programs and system features by adding notices to this file. The
format is arbitrary, except that the first line (and only the first
line) should begin with a "*" and should contain three fields in the
form
*<date><TAB><subject><TAB><programmer initials>
In the date field, the year, month and day may be given in any order
and the year may be abbreviated to 2 digits, but the month must be
given as 3 or more letters.
*29 Feb 1972 "Sticky PPN's" (RPG, COMPILE) DCS
A PPN specification [P,PN] appearing before a file name in an
RPG command string will be used for all subsequent files which
do not specify a PPN explicitly. This default remains in effect
until another "sticky PPN" is specified.
As an example, if I am running under [AIL,DCS]:
COMPILE SAIL=HEAD+DB+[S,AIL]SAIL+SYM+PARSE+PROD[AIL,DCS]+EXPR
would write the output on [AIL,DCS], get HEAD,DB, and PROD from
[AIL,DCS], and get SAIL, SYM, PARSE, and EXPR from [S,AIL].
*2 Mar 1972 CREF Default Listing Device DCS
The CREF default listing device has been changed from LPT to DSK.
This change is not made in RPG mode (so that the CREF system
command will still go directly to LPT).
*14 Mar 1972 TV "." and <esc>I Features DCS
Typing "⊗." (see TVED.DCS[UP,DOC] for notation) will cause the current
page to become a permanent part of the file (like "W" in SOS). CANCEL
will henceforth bring back this version, not the old one.
To interrupt a "FIND" search prematurely, type <esc>I. This replaces
the "\<crlf>" method.
*23 Mar 1972 TV for III DCS
The TV editor (though still officially unsupported) will now run on
both Data-Disk and III. In fact, you can transfer (by detach/attach)
from one to the other in mid-edit!
*MAR 1972 LOGOUT REG
Recent changes to logout command.
The logout command is used to terminate a job that was created
by Login, Fork, or Cfork commands. The usual form of the command is
K or KJOB, typed at monitor level, followed by a carriage return.
A new command is called KAT, which combines the features of the
K command and the ATtach command. KAT requires the job number of the
job to which you want to attach. As in the Attach command, if you
are attaching to a job with a different PPN than the job you are leaving,
you must supply the ppn of the job to which you are attaching.
Command Formats
Note that curly backets { and } denote optional
arguments; pointy brackets < and > denote a symbolic item which should
be replaced by some concrete instantiation of that item.
K or KJOB command:
K{JOB}{/<switch list>}
KA{TTACH} <job number> {[<project name>,<programmer name>{]}}{/<switch list>}
Each command line is terminated by a carriage return.
The item <switch list> consists of any sequence of letters
chosen from the list below:
THIS LIST HAS BEEN OMITTED BECAUSE I FORGOT THEM ALL.
For further confusion, consult R. Gorin.
*30 APR 72 FAIL FW
The double arrow character is no longer treated specially
within the comment portion of a line. When not within a
comment, it is equivalent to a carriage-return, line-feed
pair. Now, within comments, it prints as itself.
*3 JUN 1972 RAID DCS
A new version of RAID is on the system. Since it is compatible with
both Data-Disc and III consoles, I have put it on SYS: as both
RAID.REL and TVRAID.REL. Therefore /V, /1V, /H, /1H will all load
the same program. Later, TVRAID will be phased out (of LOADER, RPG)
and the numeric argument to H and V switches will be ignored.
This version has been tested fairly carefully. But report any
problems you have to DCS, anyway. The old files are saved as
RAID.RLO and TVRAID.RLO on [CSP,SYS].
The following things have been changed:
__ There are a few display changes; in particular, the arrow
conventions of the Data-Disc RAID are now used everywhere.
__ Byte mode input will be displayed in byte mode.
__ Conditional breakpoints now work exactly as advertised.
__ Symbol←Expr, Symbol:, and Symbol<ctrl>K now work properly.
__ All opcodes work on input (incl. ANDCAM, ORCAB, etc.)
The following new features have been added:
__ There are three new entries to the dispatch table preceding
DDT (JOBDDT → DDT) -- see RAID.ON[S,DOC] for the meaning of
this table. The three are:
DDT-12: →$RPTCNT See below
DDT-11: →$BGDDT First word of DDT
DDT-10: →DDTEND Last word of DDT
__ This is "Version 1" of RAID. The version is henceforth stored
in the leftmost 13 bits of JOBDDT. Since DDT and old RAID
contain 0 here, you can tell which you have loaded. This is for
the benefit of programs which use new features -- they can
try alternate methods if the Version isn't high enough.
__ If you insert a JSR $I in your program, you will effectively
place a breakpoint at that location. You can proceed via <ctrl>P.
DO NOT single-step or set a breakpoint on this instruction!
$I is an INTERNAL symbol in RAID. There is a pointer to it at
DDT-6.
__ When you type <call>DDT<cr>, RAID will simulate a breakpoint at
the address specified by JOBOPC. You can proceed with <ctrl>P.
Do not expect this to work if you enter DDT before running anything,
or if your program jumps to DDT (unless it stores a reasonable
address in JOBOPC first).
__ n<ctrl><meta>S, where n is a number, will execute instructions
in multi-step mode, as it would if n were absent. However, no
change will be made in the display until:
1) n instructions have been executed (<ctrl>X'ed subr =1 instr.)
2) RAID must pause to get instructions at a subroutine call.
3) You interrupt the stepping by typing something, or a
breakpoint is encountered.
After you respond at a type (2) pause, again the display remains
unchanged until one of the conditions occurs again. If you
responded <ctrl>S or <ctrl>X to the pause, the count will be
exhausted before the display changes again -- barring type (3)
events. The remaining count, if any, is always available in
$RPTCNT. This is useful for counting exact numbers of
executions in a given routine, etc.
__ Symbol<meta>K obliterates the Symbol. Unlike <ctrl>K, which
simply eliminates typout of the symbol, this also makes it
undefined for typein. If, for instance, you have two locations
with the name NM1, do:
NM2←NM1 Assigns a new name to one of them.
NM1<meta>K Deletes this symbol completely.
NM1; Reveals value of the other NM1. Now
NM2 refers to the first.
__ Macros:
Address<ctrl>M<letter> defines <ctrl><meta><letter> as
a macro. When the macro is invoked, Address (it can be just
an address or a byte pointer value) will be put in $M-1 (see
RAID.ON[S,DOC]. This has the effect of evaluating the string
at Address before evaluating any more keyboard input -- expanding
the macro. Be warned that many <ctrl><meta><letter> combinations
already mean something -- use one you can do without (the macro
takes precedence).
*4 JUN 1972 NEW DISPLAY EDITOR SRS
there now exists a new display editor, called ED, available for
experimentation. to run it, type
RU ED[S,SRS]
when it starts up, there will be some documentation on the screen.
ED is presently experimental, and improving. Features
include: editing several files at once, splitting screen between
several files or strings, faster than TV in some cases.
*6 JUN 1972 PUB MANUAL TES
A new version of PUB was put up today with some obscure bugs fixed.
Indexes and headings now work well. AFTER PAGE does not always
work, but AFTER TEXT is usually equivalent and does work.
If you must use old version, please tell me why! To use it, log in
as 12,TES and RUN PUB.
There is a new manual: SPOOL PUB.TES[S,DOC]/N/B It is 80 PAGES long, so
if you don't plan to use PUB for a few months, it is advisable to
wait for the SAILON to be printed. The new manual has an index
and a tutorial for beginners, plus appendices with (untested) examples.
To use PUB for simple purposes, only a portion of the manual needs to be
read.
*14 June 1972 VIDEO SWITCH DOCUMENTATION LES
A SAILON describing the video switch hardware resides in
VDS.LES[S,DOC]. A description of keyboard commands and monitor calls
for controlling the switch and DD channel allocation are described in
VIDEO.LES[UP,DOC]. To get a summary of the keyboard commands, say
"HELP DISPLAY" or "SPOOL KEY.LES[UP,DOC]".
*7 July 1972 DOCUMENTATION FILES LES
Online documentation files are divided into several areas, as follows.
[P,DOC] contains the compiled version of the lab phone
directory and other lists of people.
[UP,DOC] contains user program descriptions (informal).
[S,DOC] contains SAILONs, which are more formal descriptions
of programs and hardware.
[AIM,DOC] contains A. I. Memos, which report research results.
[BIB,DOC] contains bibliographies of films, theses, SAILONs, etc.
*23 JULY 1972 KLOG RHT
The KLOG command allows you to switch areas in one line. Semantically
it is LOGOUT, followed by LOGIN. The syntax is:
KLOG {/<logout switch>} {ppn spec (as you would type to LOGIN)}
examples
KLOG 1/RHT
KL/F 1|RHT
KL
1,RHT
*24 Jul 1972 SAIL DCS,RHT,JRL
LEAP news
1. In the past global model users of LEAP were required
to have the statement:
REQUIRE -1 NEW_ITEMS;
in order to inhibit the allocation of various tables
for the local leap model. This statement is no longer
required. Instead the decision to allocate the tables
will be made using the following criteria. The local model
tables will be allocated only if any of the programs loaded
together to form a single job contain any declared local
items ( that is, any items declared without the attribute
GLOBAL), or any of the programs contain the statement:
REQUIRE n NEW_ITEMS;
where "n" is greater that 0.
NOTE: this means that all users of local model LEAP must now
"require" new_items if they are going to dynamically create
non-global items by using the function NEW.(previously an
implicit REQUIRE 60 NEW_ITEMS was contained in every program).
2. LEAP tables are now allocated as part of the SAIL initialization
code rather than on the first call to any LEAP subroutine.
The tables will be allocated if any of the SAIL programs
loaded contain declared items, itemvars, sets, lists or calls
to LEAP. This change was made so that datums of items could
be utilized before the first call to LEAP.
3. The type codes for items have been altered. The new codes
returned by the TYPEIT function are as follows:
0 - item deleted or never allocated
1 - no type (no datum for this item)
2 - item is bracketed triple
3 - string
4 - real
5 - integer
6 - set
7 - list
8 - procedure
16 - string array
17 - real array
18 - integer array
19 - set array
20 - list array
21 - invalid (runtime has screwed something up)
The very astute user will notice that the only changes are to
up the codes for arrays and invalid by 5.
IMPORTANT NOTE:This unfortunately will necesitate the recompilation
and reloading of any programs which use array items as the RUNTIME
routines also use these type codes.The standard
compiler SAIL on [1,3] will have these changes as of 23:59 WED,
jul26. Therefore if any of your programs use array items you should
recompile them starting Thurs jul 27. Foist all complaints onto
Jim Low.
*25 Jul 1972 SPOOLER REG
SPOOLER NEWS:
The old spooler '*LIST*' has been removed from the system.
Users of the spooling subroutines described in SPSUB.REG[UP,DOC] will
have to reload with the new libraray.
The command SPOOLQ has been removed. Instead, use the command
QSPOOL. This has the advantage that the command can be abbreviated
to one letter and the SPOOL command to two letters.
A new SPOOL command is planned. This will allow users to more
fully utilize features of the new spooler.
*1 Aug 1972 FORTRAN REG
DEC FORTRAN version 25 and LIB40 version 31 have been put up.
Some of the bugs in the compiler / operating system have been
eliminated.
*9 Aug 1972 DATA DISK FW
Two new features have been added to data disk DPYOUT:
1) Overlapped mode, enabled by bit 0 of header word 0.
In this mode, a DPYOUT will return without waiting for
the transfer to be completed (although it will wait
for any previou transfer), enabling the program to
continue running. Header+2 will be set nonzero during
the transfer, and to zero after the transfer is complete,
so testing this is convenient (which should be done before
changing the buffer). A DPYOUT with a zero word count will
wait for a previous transfer without initiating a new one.
2) Double field mode, useful for text output. This is enabled
by bit 1 of header word 0 and will cause the buffer to be
transferred twice, once on each field. Header+3 should specify
the address of the line address command word, which should
contain the low-order line address as the third command in
the word. Bit 24 of this word will be set to the proper
field on each transfer. This feature cannot be used if more
than one low-order line address command is used.
*16 Aug 1972 AP NEWS (APE, HOT) ME
We have a line from the Associated Press (AP) over which we get
national and international news. The news that comes in gets filed
on the disk and saved for about 24 hours.
For use in reading the news, there are two programs on the system.
Type "R HOT" to have the news typed on your console as it comes in.
Type "R APE" to be able to selectively read the news that is on file.
The stories are catagorized by keywords; to read the news, you type
to APE whatever keywords you want to read about. To get help when
you are running APE, type "?" and carriage return at any point. For a
list of the keywords, see the file WORDS.SRT[AP,SYS].
For further information, see the file APE.ME[S,DOC].
*16 AUG 1972 SAIL MATRIX ROUTINES PACKAGE SHK
Following Matrix Routines Now Available:
1) Real Matrix Multiplication Routine
Multiplies two n-dimensional matrices (2-dimensional arrays)
(size m x n by n x p to get a m x p matrix)
or multiplies a 1-dimensional matrix by an n-dimensional matrix
or an n-dimensional matrix by a 1-dimensional.
MATMUL(REAL ARRAY A[a:b,c:d],REAL ARRAY B[c:d,e:f],REAL ARRAY C[a:b,e:f]);
multiplies A by B and places the result in C
(MATMUL(A,B,A) and MATMUL(A,B,B) are also valid.)
The only thing it won't do (I think) is multiply two 1-dimensional
matrices or n-dimensional arrays (n>2).
2) Array Clear Routine
MATCLR(REAL (or INTEGER) ARRAY A);
Zeros the array A.
3) Real Array Multiplied by a Real Constant
CONMUL(REAL ARRAY A,REAL B);
Multiplies array A by constant B and places the result in A.
All three are available by saying REQUIRE "MATMUL[4,SHK]" LOAD_MODULE;
*30 Aug 1972 UUO SHK
There is now a numerical listing of the UUO's - UUO.SHK[S,DOC]
*4 Sept 1972 AP NEWS (APE, HOT) ME
The AP news is now spooled once a day (at either 7am or 7pm). The
listing, which will be kept in the lounge, will indicate a file name
of "APNEWS[AP,SYS]".
*4 SEP 1972 FILDMP RPH
New program to list files in different formats. See FILDMP.RPH on UP,DOC.
*4 SEP 1972 NEW SAIL RHT
EFFECTIVE 1201 AM SAT, 26 AUG, A NEW SAIL SYSTEM WILL BE UP. ITS
SEGMENT WILL BE SAISG4. THIS NEW SYSTEM WILL INCLUDE SEVERAL NEW
FEATURES, INCLUDING USER REQUESTED INITIALIZATIONS, A LOCATION(X)
FUNCTION, AN IMPLICIT ARRAY: MEMORY[0:MEMSIZE], THE RUDIMENTS OF
MULTIPLE PROCESSES, AND MUCH MORE. WE WILL TRY TO HAVE SOME
DOCUMENTATION READY BY THE LATTER PART OF THE WEEK.
*22 SEP 1972 NEW SAIL RHT,JRL,KVL
THE NEW SAIL SYSTEM IS UP. THERE ARE MANY NEW FEATURES INCLUDING
MULTIPLE-PROCESSES WITHIN JOBS,EVENTS, A LIMITED FORM OF BACKTRACKING
BETTER FOREACH STATEMENTS, BETTER ERROR RECOVERY ETC.
THE DOCUMENTATION FOR THE NEW FEATURES IS NOT YET AVAILABLE, BUT
EXAMPLES OF THE GLORY OF NEW SAIL ARE CONTAINED IN PAPER.DOC[S,JRL]
NEWFEA.TXT[S,JRL].
THE NEW SYSTEM USES SAISG4, LIBSA4, HLBSA4, AND FOR YOU GLOBAL
MODEL HACKERS GLBS10.
NO SOURCE LANGUAGE INCOMPATIBILITIES ARE KNOWN, BUT OF COURSE
ALL PROGRAMS LOADED TOGETHER SHOULD BE COMPILED WITH THE
NEW COMPILER, AND OLD PROGRAMS SHOULD BE RECOMPILED BEFORE THEYY
ARE RELOADED.
OLD DUMP FILES SHOULD CONTINUE TO RUN FOR A WHILE UNTIL
SAISG3 IS DELETED.
SEND COMPLAINTS AND BUGS TO S,AIL OR SEE JRL,KVL OR RHT
A CURRENT LISTING WILL BE APPRECIATED. BETTER SERVICE
WILL BE GIVEN IF YOU ARE ABLE TO TICKLE THE BUG IN A SMALL
PROGRAM WITHOUT UNREADABLE MACROS.
FOR THE NEXT COUPLE DAYS WE WILL KEEP THE PREVIOUS COMPILER
AROUND AS SAIL.921[1,3], SAILOW.REL AS SAILOW.921, AND
GLBLOW.REL AS GLBLOW.921. IF YOU FEEL YOU ARE BEING
SCREWED BY SOME TERRIBLE BUG, YOU CAN, FOR INSTANCE,
SAY SOMETHING LIKE
R SAIL.921 <CR>
* FOO←FOO <CR>
* LOADER!
* SAILOW.921[1,3],FOO <ALT>
WHERE THE STARS ARE TYPED BY THE SYSTEM
THIS WILL GIVE YOU THE EFFECT OF DOING
LOA /COM FOO
USING THE PREVIOUS SYSTEM.
*22 Sept 1972 Upper Segment RAID and DDT TVR
RAID or DDT may be retrieved from the disk and run from an upper
segment. This means your core image may contain RAID at a much lower
cost (102 octal words instead of 12200 words for RAID). For details
see DEBUG.DOC[1,TVR]
*22 Sept 1972 AP NEWS (APE) ME
Multiple word keywords are now implemented in APE. To use them,
separate the individual words with spaces in your keyword exressions.
Also, to have only the first few lines of each story you select
typed out, type an "F" at the beginning of the story selection
line ("Read which one(s)?"). If you use both "F" and "=" on
the same line, the order is irrelevant. When you use the "F"
feature, you cannot spool or save the stories in a file.
For details on using APE, see the file APE.ME[S,DOC].
*12 Oct 1972 FAIL TVR
FAIL has been changed to stop at each error and give the option to
continue to next error, continue automatically or to edit. The edit
option will call SOS if there are line numbers and E if not (sorry
TECO hackers). Any complaints should be sent to TVR. If you don't
want to stop at each error, give FAIL the switch (F). The old
version is FAIL.OLD[1,3].
*21 Oct 1972 SAIL JRL,RHT,KVL
A new SAIL compiler has been put up to correct bugs reported in the
last few weeks. There should be no incompatibitlies with the preceding
compiler and programs compiled with the previous compiler should
be runable with programs compiled with the new compiler. Thus, there
is no need to recompile or even reload SAIL programs which have
been compiled since SEPT 21. If you do have a program which
compiled in the last month but doesn't now:
1. REPORT THE PROBLEM TO A SAIL HACKER - or send
a message to AIL, including such details as
where a copy of the offending program is and the
nature of the SAIL bug.
2. You may use the previous compiler by
R SAIL.102
* FOO←FOO
* <call>
where FOO is the name of your sail program and <call>
represents the typing of the CALL button (the stars are
typed by the system). The above sequence is equivalent to
the system level command:
COM /COM FOO
A note to users of multiple processes and matching procedures:
To initialize the multiple process environment the user
should include the following declaration:
EXTERNAL PROCEDURE MAINPR;
He should also make sure this procedure is called before
doing any process sprouting or matching procedure calling.
This is best done by using the REQUIRE INITIALIZATION feature
or by making:
MAINPR;
The first executable statement of your program.
This initialization will be compiled in, in the near future but until
then the above hack is required.
*3 Nov 1972 USER INTERRUPTS FW
The PC stored on a memory protect interrupt via the new-style
user interrupt system is now the exact PC stored by the hardware,
rather than being incremented as it used to be. This is consistent
both with the old-style (DEC) user interrupt system and with the
"ILL MEM REF AT USER xxxxxx" typeout. If you really care about
the exact value of this PC, consult me or the PDP-10 flowcharts,
as it is anything but consistent.
*3 Nov 1972 VIDEO SWITCH FW
The VDSMAP UUO now allows the 6 extra switch channels to be
addressed by setting bit 9 in the AC and putting the channel number
(0-5) in the TTY# field (11-17).
*8 Nov 1972 DUMPS REG
DART, a new program to back up disk files on tapes, is available.
system commands DUMP, RESTORE, TLIST, REWIND, BACKSPACE, ADvANCE all
run DART now, instead of DAEMON (CAUTION: new syntax in some cases).
See DART.REG[UP,DOC].
*8 Nov 1972 PROTECTION REG
The file access protection bit 400, which formerly had no
signifigance, now means 'Dump Never' in DART. All files that had
used this bit have been renamed without it.
*11 Nov 1972 SYSTEM REG
The job table JOBQUE in the system now contains either the positive
or negative value of the queue code of a job. Formerly, it had
always been negative.
*26 Nov 1972 FTP DCS
A new FTP has been installed with the following features:
1) You needn't type the MODE, TYPE, or BYTE commands at all
unless you want to change the defaults of S, I, and 36 resp.
Changing them is inadvisable since we only support those
settings. The defaults will be to the foreign host just
before the first data transfer.
2) RSTR clears any DATA connections that the FTP thinks it has
open. Sometimes it's wrong. If you get an indication from
FTP that a command is illegal because the DATA connection already
exists, do this command. It will go away when hacks in FTP
have been cured.
3) QUOT sends the rest of the line directly over the net, so you
can use it to execute other peoples commands which are either
nonstandard or just unsupported here. This won't do any good
if our end has to be involved in the operation, but it is good
to do things like STAT (status), and HELP at CMU.
See FTP.DCS[UP,DOC] for "complete" information about our FTP,
and NIC document 10596 for complete FTP protocol description.
*26 Nov 1972 MLISP2 DAV
A new version of MLISP2 has been put on the system. An old version
exists and will be around for one week. The main motivation for
the changes was to fix several serious bugs,
and to clean the language up prior to publishing a manual.
Changes:
(1) Variable names can no longer be literals (e.g. IF, FOR, ...).
(2) <IDEXP>, <ADDEDEXPR> have been subsumed by <EXPRESSION>.
(3) SPECIAL variables now must be declared at translation (PARSE)
time. To facilitate this, a new production has been added,
having the form: SPECIAL <identifier_list>
It is strongly suggested that all SPECIAL variables be
declared at the top of the program using this production.
(4) ?# in the syntax (to inhibit scanning) should now be just #.
It no longer takes up a syntax position.
(5) Setting variables in backtracking contexts is now done with
real LISP numbers (formerly machine representation).
A function CONTEXT() gets the current backtracking
context. X{CONTEXT()/10 + 3} ← etc. is now legal.
(6) THE FOLLOWING CHANGE IS TEMPORARY; WILL BE FIXED IN A DAY OR 2:
(*) Prefixes are more restricted in use; the syntax is
<PREFIX> <SIMPEX> as always, but IF, FOR, CASE, etc.
are no longer <SIMPEX>'s but are now full <EXPRESSION>'s.
Thus RETURN IF ..., PRINT CASE ..., etc. no longer work;
use RETURN(IF ..., PRINT(CASE ..., etc.
(7) The syntax of SELECT has been changed. Use SUCCESSOR instead
of NEXT, and FINALLY instead of IN WHICH CASE.
E.g. SELECT CAR(L) FROM L:'(A B C) SUCCESSOR CDR(L)
UNLESS NULL(L) FINALLY FAILURE()
(8) MLISP2.PRI now prints as it goes along, instead of at the end.
*3 Dec 1972 SAIL RHT
A new SAIL system will be put up at 2359 Thursday, 7 Dec 1972
This system will include
(1) Leap revisions by JRL. This means that any programs
that use LEAP should be recompiled.
(2) User required initializations will take place as
the first executable statement of the main
program (after outer block arrays have been
initialized). Programs that are loaded
with any .REL files which have user initializations
should have their main programs recompiled.
(3) Hooks into the user interrupt system have been provided.
Those interested should see Russ Taylor.
(4) A new kind of declaration has been provided:
CLEANUP proc1,proc2,proc3;
Where proc1, etc. are names of (parameterless)
procedures. The effect of a CLEANUP declaration
is to cause the named procedures to be called
whenever the block in which it occurs is exited,
whether by falling through the end, doing a go_to,
or by any other means. These procedures will be
called before any local arrays, sets, or lists are
released. The calls will take place in the order
specified. Thus:
BEGIN
INTEGER I;
PROCEDURE FOO;I←1;
BEGIN
INTEGER ARRAY X[0:I];
PROCEDURE BAZ;OUTSTR(CVS(X[I]);
CLEANUP FOO,BAZ;
:
COMMENT NOW WHEN THIS BLOCK IS EXITED, X[1] WILL
BE PRINTED OUT;
:
END;
END;
(5) various minor modifications to the process stuff.
The new segment is SAISG5.SEG, the libraries are LIBSA5.REL
& HLBSA5.REL.
The old compiler will be SAIL.D07[1,3]
*12 Dec 72 AP NEWS (APE) ME
There is now a full search feature in APE. If you type in a word
that is not in the keyword dictionary, APE will tell you so and ask
you if you wish a search done. If you type Y (and <return>), the
news file will be searched for the specified keyword. If you type
"?", a (complete) summary of this feature will be typed out. If you
type anything else, no search will be done. You may interrupt a
search in progress by typing a carriage return or (on displays)
[ESC] I.
Note: Every word not in the dictionary requires a separate search to
be done.
Special note: Normally the whole news file is searched, taking 8 to
10 seconds, but if a non-keyword is the second part of an
intersection (eg, NIXON * JJ) or difference (eg, NIXON - JJ), then
only the necessary stories are searched.
*12 DEC 72 PUB TES
PUBMAC.DFS[1,3] has been edited to correct an error in INDEX creation.
The old version is PUBMAC.OLD[1,3] for a few weeks.
The PUB manual has been deleted from the disk. The abstract remains
on PUB.TES[S,DOC]. Bound copies are in the SAILON file drawer.
In January, a new-SAIL PUB should be up with several obscure but
annoying bugs removed. Major restrictions and bugs now known:
SEND INDEX ⊂ ... ⊃ must be all on one line
See {PAGE X} must be followed by a non-word-break
such as ) , ; ] .
but definitely not a SPACE
NARROW, WIDEN, VARIABLE only work within a block -- not at top-level.
TURN OFF "}" inside blocks doesn't always work right (just for "}")
↓_abc_abc_abc_↓ seems not to work right in FILL mode someplaces.
Footnotes hack a lot, esp. if the page fills up during one.
*9 Jan 1973 NEWS LES
To get selective listings from the NOTICE file, say "R NEWS", which
will respond with an asterisk and expect a query such as
*March 15
This asks for all notices posted since the ides of March. If the day
is omitted, 1 is assumed; if the month is omitted, January is
assumed; if the year is omitted (as above) the last instance is
assumed.
*Nov<TAB>SAIL
is an example of a more general kind if query. This asks for all
notices since last November 1 that contain the string "SAIL"
somewhere in the subject field, with any case differences ignored.
The search could be made more specific by saying
*NOV<TAB>SAIL<TAB>DCS
which delivers only such notices written by Dan Swinehart.
If the query begins with a <TAB>, so that the date is omitted, then
all dates will be accepted. Similarly, the Subject field may be
omitted. A null query outputs the entire NOTICE file.
If you would like the output to be spooled, type "*" at the end of
your query, e. g.
*July 4, 1776 Sex*
If you would like to see title lines only, put a "-" at the end. You
can use both "*" and "-" together in either order.
If you forget all this, type "?<return>" and this notice will appear
magically.
*23 Jan 73 AP NEWS (APE) ME
A new version of APE has been put on the system. The new APE
includes several changes to input formats, particularly where file or
spooler output is desired. The file APE.ME[S,DOC] has been updated
to explain all the new features in detail. You should read that
file, especially pages 4 to 12, before trying to run APE.
Alternatively, you can type a question mark (and carriage return) to
APE at any time to get help. Here are some of the main changes.
All input lines must now be ended with carriage returns (this
includes the "Y" to cause a search).
Input to APE from a command file is now possible (and easy/fun). The
command file should have the name APE.CMD to be most convenient, but
any file name is legal as is (almost) any text file format (SOS, TV,
E, etc.).
A "CHOOSE" feature has been added to allow you to see the beginning
of each story and then decide if you want to see the rest of the
story.
To get output to a file, you say
<filename> ←
followed by the usual story selection specification.
To get output to the spooler, you add an "S" to the selection line.
To avoid having stories typed out, for instance when they are being
spooled, add a "D" (meaning Dont type 'em) to the selection line.
[ESC] I will interrupt searches as well as typeouts now.
To be notified whenever a story comes in that matches a certain
keyword expression, precede the expression with a dollar sign ("$").
You can have APE typeout the keywords by which a story has been
categorized by adding a "W" to the selection line.
*28 Jan 73 SAIL JRL
The item NIC returnedby INTERROGATE when the notice queue is empty,
is now the same as the item UNBOUND used in ? FOREACHES and
matching procedures.
i.e.
(NIC=UNBOUND) is TRUE
UNBOUND has a new name BINDIT since we felt the name UNBOUND had
erroneous connotations.
Both NIC and UNBOUND will be allowed for a while, but you should
replace them with BINDIT in your source-files.
Because of these changes programs using NIC, UNBOUND should be
recompiled.
ANY is now an item (though it can't be used in MAKE statements).
So you may now say:
ITMVR ← ANY;
ERASE A⊗B≡ ITMVR;
which will have the same effect as
ERASE A⊗B≡ANY;
ANY may be an element of a set or list.
All itemvars are originally initialized to ANY.
*22 Feb 1973 FAIL FW
Several changes have been made to FAIL:
1) CALL names are now automatically OPDEFed as their corresponding
CALLIs, so CALL is virtually obsolete. This is done dynamically
so it should always be up to date.
2) BEND, if given an identifier argument, now checks that argument
against the name of the block it ends, and generates an error
message if they mismatch. This can be used as a check on
BEGIN/BEND phasing.
3) The symbol $. is now available, which is like . except that it
refers to the location actually occupied by the current instruction.
This differs from . inside literals or if a PHASE is in effect.
4) Declaring a symbol both INTERNAL and EXTERNAL is now an error,
rather than causing FAIL to drop dead as it used to.
5) The test for too many BENDs now works properly.
6) Frequently redefined macros no longer eat up large amounts of core.
*25 FEB 73 COPY RPH
New copy features:
1) If you use [p] instead of [p,pn] the current default pn is used.
2) XGPLIST, new command, equivalent to COPY XGP:←.
3) New switch for font selects, format:
/FONT{#n}=<filename>{.ext}{[<p>,<pn>]}
If no ext is given, FNT is assumed. If no p,pn is given
XGP,SYS is assumed.The #n is the font id number, if it is left
out, it is assumed to be 0.
4) New format for /EXTRA switch, if you use /EXTRA≡n.
(yes that's an equivalence sign), then n is the number
of scan lines to skip between text lines, not the number
of extra line feeds to insert.
*4 MARCH 1973 MLISP DAV
New version of MLISP is up; old copies will be kept on MLISP.OLD
and MLISPC.OLD on the system for a week or two. Differences:
1) A couple of lingering bugs were squashed.
2) A COMMENT expression was added so that MLISP will accept TV
format files. Syntax:
COMMENT <any characters except ; or unpaired " or %> ;
It may occur anywhere an expression may be used, e.g.
A + COMMENT A DUMB PLACE TO PUT IT; B + C
BEGIN
COMMENT A BETTER PLACE TO PUT IT;
A + B + C;
END;
The old %...% comment is still around as always.
3) An updated version of the LISP compiler is included in MLISPC.
4) Insignificant change: function names are printed horizontally
instead of vertically. Don't worry, PRINT is not screwing
up; that's the way it is supposed to work.
*5 MARCH 1973 PUB TES
THIS NOTICE IS ABOUT 70 LINES LONG, IN DECREASING ORDER OF
IMPORTANCE.
A NEW VERSION OF PUB IS UP TODAY WITH MANY REPAIRS AND A
FEW CHANGES. OLD VERSION IS PUB.OLD. SEE TES WITH PROBLEMS.
NOTE: UNTIL THE NEXT VERSION OF PUB IS UP, XGP USERS SHOULD
USE THE "DEVICE TTY" COMMAND OR THE "/T" SWITCH, ESPECIALLY
IF THE PAGE FRAME IS HIGHER THAN 53 LINES.
ABOUT 15 KNOWN BUGS HAVE BEEN FIXED (THANKS TO RKJ AT CMU FOR
A COUPLE OF STICKLERS). FOOTNOTES SHOULD WORK BETTER;
VARIABLE DECLARATIONS WORK; CROSS-REFERENCES OF THE FORM
"UNIT!" LABEL NOW WORK; AREA TEXT AND COUNT PAGE CAN ONCE
AGAIN BE DECLARED IN BLOCKS; ROMAN NUMERALS, MOD, MIN, AND,
GROUP BEGIN...END, INSERT...PORTION (WITH NO SENDS), AND SOME
OTHER THINGS NOW WORK WELL. TRY OUT YOUR FAVORITE BUG.
ONE BUG NOT YET FIXED: SOMETIMES PUB WILL LOOP
WHEN THERE ARE AREAS DECLARED THAT DON'T START AT CHAR 1.
REPORT OTHER BUGS TO TES.
CHANGES AND NEW FEATURES:
(1) TYPEOUT DURING COMPILATION RESEMBLES NEW SAIL'S.
NOTE: FILES LIKE 3INDE.PUZ AND 2CONT.PUG ARE GENERATED
FILES. PAGE 1 OF TV FILES IS NOT REPORTED BY PUB.
(2) THERE IS NO LONGER A BLANK PAGE AT THE BEGINNING OF LPT
DOCUMENTS.
(3) NEW COMMAND TO CIRCUMVENT CHANGE (2): "BLANK PAGE N" CLOSES
THE CURRENT PGE AND LEAVES N BLANK PAGES IN THE DOCUMENT.
THE PAGE COUNTER IS NOT AFFECTED. IF N IS OMITTED, 1 IS
ASSUMED.
(4) FOR TTY USERS: INSTEAD OF CURLY BRACKETS AND HORSESHOE
BRACKETS, YOU CAN NOW USE THE FOLLOWING CHARACTER PAIRS:
$( MEANS LEFT HORSESHOE (OPEN MACRO)
)$ MEAN RIGHT HORSESHOE (CLOSE MACRO)
]$ MEANS RIGHT BRACE (SWITCH TO TEXT MODE)
THESE ARE ONLY VALID IN COMMAND MODE AND NEED NOT BE TURNED
ON. ON THE OTHER HAND, THE FOLLOWING CONTROL CHARACTERS
ARE ONLY RECOGNIZED IN TEXT MODE AND MUST BE TURNED ON
(OTHER CHARACTERS MAY BE TURNED ON FOR THEM):
$[ MEANS LEFT BRACE (SWITCH TO COMMAND MODE).
(5) NEW FEATURE: TURN ON/OFF TAB FOR "<CHARACTER>" ;;
AS PUB READS THE MANUSCRIPT, IT SUBSTITUTES FOR EACH "TAB"
FROM ONE TO EIGHT SPACES. THIS COMMAND CHANGES PUB SO THAT
IT SUBSTITUTES THE SINGLE CHARACTER <CHARACTER> INSTEAD.
THE COMMAND MUST BE FOLLOWED BY TWO SEMICOLONS OR ELSE IT MAY
NOT TAKE EFFECT ON THE NEXT LINE. IF IT IS DECLARED IN A BLOCK,
THE "END" OF THE BLOCK MUST BE FOLLOWED BY TWO SEMICOLONS OR
THE ORIGINAL MEANING OF TAB MAY NOT REAPPEAR IN TIME FOR THE
NEXT LINE.
(6) SINGLE SPACE, DOUBLE SPACE, AND TRIPLE SPACE NOW BREAK BEFORE
CHANGING THE VALUE OF SPREAD, SO THEY TAKE EFFECT IMMEDIATELY.
SUGGESTIONS AND WARNINGS:
(1) "COUNT PAGE" INITIALLIZES THE PAGE COUNTER TO NULL. IT
GETS STEPPED TO 1 THE NEXT TIME A PAGE IS OPENED.
THIS IS WHY THE TITLE PAGE HAS A BLANK PAGE NUMBER.
(2) AREA RE-DECLARATIONS DO NOT TAKE EFFECT UNTIL THE
CURRENT PAGE IS CLOSED.
(3) IF YOUR DOCUMENT IS LONG, IT IS HELPFUL TO HAVE A SOURCE
FILE FOR EACH CHAPTER, AND ON EACH DEBUG RUN TO "REQUIRE"
FROM THE MAIN MANUSCRIPT FILE ONLY THOSE CHAPTER FILES THAT
YOU ARE TESTING. GLOBAL MACROS SHOULD APPEAR IN THE MAIN
FILE OF COURSE.
THE MANUAL HAS NOT BEEN CHANGED, BUT IT IS BACK ON THE DISK
FOR THE BENEFIT OF NET USERS (SEE PUB.TES[S,DOC] FOR DETAILS).
*9 MARCH 1973 MLISP2 DAV
A new version of MLISP2 is up. Old version is on SYS:MLISP2.OLD for
a week or so. There have been extensive changes, but most are additions
so that programs shouldn't have to be altered. The changes:
1) The code generated in the syntax part of productions is somewhat
shorter and more efficient.
2) There is now a way to prevent an identifier in the syntax part of
a production from being turned into a LITERAL, namely precede it
with a quote mark (').
Example: {IF ...}
makes IF a LITERAL, as well as generating code to check for it,
but {'IF ...}
just generates the code to check for it. In fact, any token
of type identifier, number or delimiter may be included in
the syntax by preceeding it with the quote mark; previously
only delimiters could be so included.
3) Numbers in syntax patterns MUST now be preceeded by the quote
mark; previously they could occur alone. This should not
affect anyone, since I don't know of anyone who uses numbers.
4) The syntax of FOR, WHILE and UNTIL loops has been generalized
slightly: `WHILE' and `UNTIL' are now interchangeable:
Examples: FOR NEW I IN L DO NIL UNTIL I = X;
FOR NEW I IN L DO NIL WHILE I = X;
DO PRINT(X) UNTIL A=B;
DO PRINT(X) WHILE A=B;
WHILE A=B DO PRINT(X);
UNTIL A=B DO PRINT(X);
In addition, the code generated by COLLECT in all of the loops
is now more efficient (generates an NCONC in some cases, rather
than an APPEND).
5) The DEFINE expression and the vector operator (⊗) have been
added to MLISP2 to make it more compatible with MLISP
(c.f. the MLISP manual). However, the DEFINE
expression is not quite as general: only prefix and infix
functions may be DEFINEd, whereas MLISP would allow any
symbol to be DEFINEd.
Syntax: DEFINE <dterm>, <dterm>, ..., <dterm> (at least 1)
<dterm> ::= <identifier> PREFIX [<token>] [<integer>]
<identifier> <integer> <integer>
<identifier> <token> [<integer> <integer>]
where [] means optional.
The integers are binding powers for the function; only one
binding power, the right binding power, needs to be specified for
prefixes. The <token>s are identifiers or delimiters which
may serve as an abbreviation for the function.
Examples: DEFINE NOT PREFIX;
DEFINE NOT PREFIX ¬;
DEFINE NOT PREFIX 1000;
DEFINE PLUS + 350 400;
6) ONLY FUNCTIONS THAT ARE EXPLICITLY DEFINE'D TO BE PREFIXES MAY
NOW BE USED AS PREFIXES (I.E. WITHOUT () AROUND THEIR
ARGUMENT AND WITH THE VECTOR OPERATOR ⊗)!!! NO MORE USER-DEFINED
PREFIXES UNLESS EXPLICITLY DEFINE'D!!!
*16 March 1973 FREEFOROL processes Text Macros LES
Freeforol may be used to generate form letters or other fill-in-
the-blanks text. It is described in FREEFO.LES[UP,DOC].
*21 March 1973 WHERE Command TVR
Typing WHERE <programmer> will print the status of such jobs
currently logged in. For example, WHERE NET,GUE will WHERE all
network guests. Like WHO, this also clobbers your core image.
*27 March 1973 TV ↔ E switching DCS and FW
During transition from TV to E, there will be features available
in one which are unavailable in the other. To ease the switch,
we have installed complementary extend-mode commands: "ETV"
in TV, "TV" in E. Executing it will switch editors (writing
current page first, if necessary). The new editor will be
editing the same file, on the same page and line, with the same
protection (readonly or readwrite).
The "TV" command in E is only a special case of a much more
glorious "RUN" feature. For more information see TV2E.FW[UP,DOC].
*4 April 1973 TALKER, FTP DCS
In response to the Site: prompt, one can type a site name or
a (decimal) site number -- one way to try to find out the site
name of an otherwise Anonymous site.
*5 April 1973 PUB TES
Users of Jerry Agin's underground figure macros note:
"MACRO SECREF" et al have a bug which was ignored by old
versions of PUB but now result in the error message:
"EXTRANEOUS { IN COMMAND LINE"
To fix this, remove both the { and } from these particular
macros. E.G.:
.MACRO SECREF ⊂ "Section " ;{SECTION! LBL} ⊃
should be:
.MACRO SECREF ⊂ "Section " ;SECTION! LBL ⊃
If you like, this can be abbreviated:
.MACRO SECREF ⊂ "Section!" LBL ⊃
which did not work in old versions but now does!
*8 April 1973 APE, AUTOMATIC NOTIFICATION ME
If you wish to be notified each and every time an AP story comes in
that matches a given keyword expression, type the expression to APE
and precede it with a dollar sign ($). For example,
$JUPITER*PIONEER
When a story comes in that matches the expression, you will be sent a
message which you will get when you login. Also, if you are logged
in at the time the story comes in, the message
*** AP STORY FOUND ***
will be typed on your console.
To see what automatic notification requests you currently have, type
the keyword expression "$" (just dollar sign) to APE. To be able to
delete these requests, type the expression "$$". Each request will
expire two months after it is submitted. At that time you will get a
message indicating that the request has expired.
*9 April 1973 APE, AUTOMATIC NOTIFICATION ME
Here are some notes on using Automatic Notification for AP stories.
Automatic notification (AN) is intended to be used for two main
purposes. 1) If you are expecting an urgent story to come in at any
moment, and you want to be notified as soon as it comes in (assuming
you are logged in), automatic notification saves you the trouble of
running APE every half hour to find out if your story has come in.
2) If you are expecting a story to come in some day, but you don't
know when, then AN saves you the effort of running APE every day, if
you wouldn't otherwise do so.
If you find you are being notified about the same kind of story
several times a day, and if the stories are not particularly urgent,
then you will probably find that the normal use of APE, possibly
using a command file (see previous section) will be more convenient.
Also, the more AN requests there are, the more work the continually
running special AP programs have to do. However, you are free to
choose the method of using APE that best fits your purposes.
One final note on AN: When you get a hit from an AN request, the best
way to use APE to read the story is to type in the expression
(possibly using a command file) that got the hit. Alternatively, you
can type in the sequence number of the story found, but this is
liable to give you an extra story with the same sequence number. You
can combine these two methods and type something like (say)
"#35*CHESS", if CHESS was the AN request getting a hit on story #35.
If a story you have been notified about is more than a day or so old,
then you will probably not find it with APE. However, since the news
is spooled every day, you should be able to find old stories in the
stack of listings in the lounge (unless you are a remote user!). For
even older listings, see ME.
For more details, see APE.ME[S,DOC], special features 10, 11 and 12.
*11 APR 1973 INFO REM
To have access to the REM information system, type "R INFO".
The general form of command is "R INFO;<FILNAM>;<PRETYPE>"
if you are an expert and know what that means.
*11 APR 73 XGP REM
The currently most-useful program for printing documents on
the Xerox Graphics Printer is MRPP3[XGP,REM] (Maas Research Paper
Plotter program, version 3) which allows you to change fonts anywhere
(in the middle of a word if you wish), do paragraph justification and
centering, super-scripts above sub-scripts, nicely-formatted tabular
listings, etc. The latest documentation is usually posted on the
bulletin board near the machine room, however if you want you own
copy here is what you do:
.RU MRPP3[XGP,REM]
FOO.LST←MRPP3.WRU[XGP,REM]
then when it is all finished and you see XG @QQXGP.RPG in your line
editor, hit carriage return, wait for the device to be available if
it is busy, then collect the approximately three pages as they come
out of the XGP (after the 2 8/10 pages of chard that comes out ahead
of each listing).
*9 May 1973 FAIL FW
Several changes have been made to FAIL:
1) The CALLI opcode definer has been extended to include all
UUO opcodes. Thus all existing system calls now have their
mnemonics predefined in FAIL. Again, this is dynamic, so
it will continue to be up-to-date with no further changes
to FAIL itself.
2) A couple of new symbol constructs are available. One is
SYM::, which defines SYM as a half-killed label, just
as in SYM←←EXPR. Also, SYM↑ may be used anywhere SYM is
legal and will make SYM either EXTERNAL or INTERNAL,
depending upon whether it is defined in the program.
Thus SYM↑:: makes SYM a half-killed internal label, etc.
(N.B.: Any symbol which has been declared EXTERNAL will
be converted to INTERNAL if and when it is defined.)
3) The PRGEND statement (from MACRO) is now available to
allow multiple independent programs to be assembled
within a single file. This is particularly useful for
libraries. PRGEND behaves exactly like END, and similarly
causes a complete assembler restart, except that I/O
is undisturbed and assembly continues.
*19 MAY 1973 MLISP2 DAV
Two new runtime functions have been added to MLISP2:
PEEKVAL(integer) - peeks at the integer'th token ahead without
advancing the scanner, and returns its value
PEEKTYPE(integer) - peeks at the integer'th token ahead without
advancing the scanner, and returns its type
The existing runtime function PEEK is equivalent to
PEEKVAL(1) CONS PEEKTYPE(1)
The MLISP2 manual/report is now available as AI Memo 195.
*22 May 73 MAIL SEND REMIND CANCEL BH
The SEND command now sends messages to users' consoles, and the
MAIL command sends messages to be received on login (what SEND
used to do). There is also a REMIND command for delayed messages,
and a CANCEL command to delete reminder requests. All these
commands are fully documented in MAIL.BH[UP,DOC].
*1 JUNE 1973 MLISP2 DAV
New MLISP2 system up. Features:
(1) An automatic accounting feature has been added to MLISP2's
version of LAP. Any user (or system) function compiled
into LAP and read in will be included in the accounting
system. The accounting system keeps track of the total
number of times a function is called. (It adds two
instructions to every function LAP'ed in:
AOSA .+1
0
<user code>
). The counts may be examined, set, and reset. NOTE:
interpreter and interpreted functions are not accounted;
only functions LAP'ed in.
(2) To facilitate the above feature, two new runtime functions
have been added:
GETCOUNT(atom) - takes a function name as its argument
and returns the number of times the function
has been entered.
PUTCOUNT(atom, integer) - sets the number of times the
function has been entered to the integer (usually 0).
*2 Jun 73 MAIL SEND REMIND CANCEL LATER GRIPE BH
The following nifty features have been added to the MAIL program:
1. The switch /D on SEND, MAIL, or REMIND will add a line to the
message containing a list of the destinations. If your list
included a file reference, both the file spec and its contents
will be listed. Try SEND/D . FOO etc. for the format.
2. The REMIND system will now run an arbitrary program for you
if you use the command
.LATER <filespec> <core> <datime> <count>
default device DSK (the only other option is SYS), default
extension DMP. Datime and count are like REMIND. Core is
an optional argument in real angle brackets specifying an
initial core allocation and/or start address offset as in
the SWAP UUO, in the format <99K,+77> (decimal and octal).
3. There is an RPG feature, which reads commands from QQMAI.RPG;
see MAIL.BH[UP,DOC] for a full description of this and
related useless features.
4. The GRIPE command exists to vent your anger at Ralph's
malfunctions.
5. REMIND/M or REMIND/S for mail only or send only.
6. If you are logged in when someone MAILs you a note, you
get a one-line message ;; →→→ MAIL FOR ppn ←←←. This
is also true for mail sent over the net via FTP.
7. If you type in a long message and get screwed because
of an error in the destination list or something, you
can REENTER and edit your command.
All the gory details are in MAIL.BH[UP,DOC], which you
should be sure to read especially if you want to use the
LATER or RPG features.
*4 Jun 73 MAIL SEND REMIND LATER CANCEL GRIPE BH
The destination list is now checked by MAIL and friends
before asking for the message. Invalid destinations (i.e.,
non-existent users) get a message; if there are no valid
destinations in the list, the program exits. Note: SEND
does not check for logged-in users until ater you enter the
message, as before; only the existence of a file directory
is checked ahead of time.
*19 June 1973 WHOLINE TIME DAYTIME ESCAPE X ESCAPE Q ME
A new wholine, new TIME and DAYTIME commands, two new ESCAPE
commands and some new TTY monitor commands are up.
------
The new wholine contains one new time on the user line; this time,
called XTIME and followed on the wholine by an X, is the incremental
run time for the given job since the last teletype interaction and
is shown in hour, minutes, seconds and ticks. The number after the
single quote is ticks. The single quote itself is a right quote if
automatic resetting of XTIME is enabled and a left quote if
automatic resetting is inhibited; see [BRK] X below.
The XTIME is reset whenever the job comes out of teletype input wait
and whenever the job is caused to run by a monitor command other
than CONTINUE. Thus the RUN, GET, SAVE, SSAVE, CORE 0, FINISH,
START, REENTER, DDT and all the RPG monitor commands cause XTIME to
be reset; and if the job goes into IOWQ waiting for input from the
teletype, then the XTIME will be reset when the job is awakened by
teletype input. However, note that if you have typed ahead and the
job reads characters from the teletype without having to wait, then
your XTIME will NOT be reset. (Monitor commands that run the job
will reset XTIME whether or not you have typed ahead.)
------
In order to allow flexible use of this new incremental run time,
some new ESCAPE keyboard commands have been added along with some
new monitor commands.
[BRK] X inhibits automatic resetting of your XTIME. Thus this
allows your XTIME to continue accumulating indefinitely. It will no
longer be reset by coming out of tty input wait or by monitor
commands that run the program.
[ESC] X undoes the effect of [BRK] X, thus causing XTIME to resume
being reset at the normal times.
Note that neither [ESC] X nor [BRK] X causes any change in the
current XTIME.
[ESC] 1 X causes your XTIME to be reset and then inhibits automatic
resetting of XTIME.
[BRK] 1 X causes your XTIME to be set to your total run time and
then inhibits automatic resetting of XTIME.
------
Four new monitor commands have been added to allow users who are not
on displays to get the effects of the above ESCAPE commands.
TTY UPDATE does the same thing as [ESC] X, ie, enables automatic
resetting of your XTIME.
TTY NO UPDATE does the same thing as [BRK] X, ie, inhibits automatic
resetting of your XTIME.
TTY TIME does the same thing as [ESC] 1 X, ie, resets your XTIME and
then inhibits automatic resetting.
TTY NO TIME does the same thing as [BRK] 1 X, ie, sets your XTIME to
your total run time and then inhibits automatic resetting.
------
The TIME command has been modified to print out five labelled
quantities. (TIME still takes an optional job number argument.)
Four of these are times, which are printed in hours, minutes,
seconds and ticks (the number after the single quote is ticks).
TOTAL is the total run time for the specified job.
INCREMENT is the old incremental run time that the TIME command has
always printed and reset. When you request the TIME for your own
job, this time is reset (like it always has been). When you request
the TIME for another job, you do NOT cause his incremental run time
to be reset.
XTIME is the new XTIME which is explained above. The XTIME is not
changed at all by the TIME command.
WAIT is the time the job has spent waiting for the system. This
includes actual time running as well as time waiting to be run and
time waiting for disk I/O, etc, but does not include time spent in
IOWQ waiting for teletype input, nor time in STOPQ, NULLQ or INTWQ.
This time also appears on the wholine with the label W.
KCS is the total number of kilo-core-seconds you have used since you
logged in. This number is incremented by your core size (in K) for
every second of runtime.
------
The DAYTIME command now takes an optional job number argument, eg,
"DAYTIM 22". If the job number is zero (eg, "DA 0"), then your own
job number is used. If there is an argument, then three times are
printed: the time of login of the specified job, the time the
specified job was last run, and the current time. The DAYTIME
command with no argument does the same thing it used to do, ie, give
you the day, date and time.
------
[ESC] Q now gives you the wholine for the next job with the same
programmer name as the job on your current wholine, or as your own
job if you have no wholine up.
[BRK] Q does the same thing as [ESC] Q except that it searches the
job table backwards.
*2 July 1973 NOTICEs ME
The news file NOTICE[UP,DOC] is now in E/TV format (and should be
kept that way). Each writeup is on a separate page so that E's
directory page shows the title lines from all the writeups. This
enables the NEWS program to run much faster.
*12 July 1973 SYSTEM NEWS PROGRAM ME
A new NEWS program is up. It makes use of the E/TV directory page
of the NOTICE file to do random access to individual writeups after
searching only the directory page. Each writeup must now be on a
separate page, with the title line being the first line of the page.
The NEWS program will now run much faster than before because of
this new design.
Also, three new features have been added.
[ESC] O (control-O on ttys) is undone just before each writeup is
typed out; so you can flush the remainder of a single writeup by
typing [ESC] O or control-O.
[ESC] I interrupts the current search, thus flushing a whole series
of typeouts and returning you to the point of typing in a line.
This also flushes any spooler output you may have requested.
Finally, when you spool a collection of writeups, the title line of
each writeup will be typed out on the console.
*12 July 73 MAIL SEND REMIND RCV BH
Several new features in the MAIL system:
1. The RCV command to edit your mail message by message. Type
RCV for your own mail, RCV prg or RCV prj,prg or RCV prj,* for other
people's mail, or RCV #filename for an arbitrary file in mail format,
i.e., messages start with a line starting with "∂". For each message
you can save, delete, spool, copy, edit, etc. it. The program is
more or less self-explanatory, but you can read RCV.BH[UP,DOC] if you like.
2. The SEND command has a new switch, /W (for Where), which tells
you ppn, tty, jobname, queue, and all that stuff for all consoles which
get the message (good for seeing if the recipient is using E and lost it).
3. There is a /U switch for undefined users, to allow mail to be sent
to people not known to the system. It still warns you they're unknown.
4. If you start a one-line message and decide you need more lines
after all, end the command line with a linefeed and you'll be allowed
to continue the message
5. Filenames in both MAIL and RCV may use the ↓...↓ notation for
non-alphameric chars. Also, there is a special abbreviation for message
filenames: use ∂ for your own mail file, ∂prg or ∂prj,prg etc. for
others; this implies a default of xxx.MSG[2,2] but you can specify a
different extension or ppn.
The current state of the MAIL program is documented in MAIL.BH[UP,DOC].
*23 JULY 1973 SAIL RHT JRL HJS KVL
The following are the changes made to SAIL. These will be incorporated
in the system as of FRIDAY evening, July 27.
I. RELEASE -
RELEASE now takes a second (optional) argument, the close inhibit
bits. The implied declaration is
EXTERNAL PROCEDURE RELEASE(INTEGER CHAN,INHIBIT);
If bit 35 (decimal value 1) is on in INHIBIT, the output
file of this channel will not be closed. If bit 34
(decimal value 2) is on the input side of this channel will not
be closed.
If you do not specify any INHIBIT field, SAIL will assume
an entry of 0. Thus,
RELEASE(chan) is identical in effect to RELEASE(chan,0)
Any program containing RELEASE must be recompiled.
II. BUCKETS
You can now specify the size of the local model LEAP hash table
used via
REQUIRE n BUCKETS;
The next higher power of two will be used as the hash table size.
The size will be 2↑m where, m is the smallest positive integer
such that 2↑m ≥ n. The default value for n is 512.
If several separately compiled programs are loaded together
the largest number of BUCKETS required will be used.
This should enable people who use items(for processes etc)
but few associations, to have smaller core images. Similarly
by requiring a large n, associative operations will, in general
be speeded up.
III. MACROS
Several changes have been made to the macro system. This includes new features
as well as some changes to existing features. If the changes cause programs to
perform erroneously, there exist means to override these changes. If problems
still persist, contact HJS.
A. Changes:
1. DEFINE reverts to its old meaning - i.e. it is used to both declare the name
as a macro name and to assign a piece of text to it. Any subsequent redefi-
nition has the effect of suspending the previous definition until the end of
the block within which the new definition occurs. At the end of the block
the name reverts to its previous definition. Currently the mode of operation
is that all subsequent DEFINE's with the same name act as a redefinition which
remains in effect for the lifetime of the macro name (where lifetime is defined
to be the block where the name was first declared). REDEFINE is a new construct
that has been added to allow such redefinition. In order to enable current
programs using macro redefinition to work the following statement should be
inserted in the beginning of the program:
LET DEFINE=REDEFINE;
This modification will cure the DUPLICATE IDENTIFIER DECLARATION error message
that will occur when two DEFINEs with the same macro name are seen in the same
block. Otherewise, the second DEFINE should be replaced by REDEFINE.
2. IFC reverts to its previous meaning that macros are expanded in the false part
of conditional compilation. IFCR is a new construct that has been added to
allow suspension of macro expansion in the false part of conditional compila-
tion. In order to use this feature, one simply uses IFCR instead of IFC. Users
who have been accustomed to macros not being expanded in the false part of con-
ditional compilation can have that effect by inserting the following statement
in the beginning of the program:
LET IFC=IFCR;
B. New Features:
1. NOMAC macro_name is used to inhibit expansion of macro_name when it is scanned.
For example if Z has been defined to be a macro name in an outer block and in
an inner block it is desired to use Z as an integer then it is declared as:
INTEGER NOMAC Z;
2. EVALDEFINE macro_name is used whenever a DEFINE is appropriate and has the
effect that the macro_name is expanded. For example, suppose X has been
defined earlier in the program to be a macro having VAR as its textual value,
then the following statement
EVALDEFINE X=⊂VARIABLE⊃;
has the effect that VAR is defined to be a macro name having VARIABLE as its
textual value rather than X be redefined to VARIABLE.
3. If a macro is called with less actual parameters than called for by its original
definition, then the missing ones are treated as if they had been given the null
string as a value.
4. ASSIGNC is used to assign values to macro formals. The syntax of the statement
is identical to that for DEFINE. This feature can be used to simulate a macro
call by value when the value is a compile-time expression. For example:
ASSIGNC A=A; where A is a formal parameter name.
Another use of the ASSIGNC construct is to allow local temporary variables in
macros. This is particularly useful when defining recursive macros.
5. When a macro is defined and the list of formal parameters is given, the various
formal parameter names can be separated by commas or semicolons. This is useful
in case a user wants for documentation reasons to separate the names of the
macro parameters which are used as formals from those to be used as local
variables.
6. REDEFINE and EVALDEFINE act just like DEFINE when the macro name has not been
previously encountered.
IV. EXPONENTIATION change
The code for exponentiation has been changed somewhat. int↑int will now
not lose if the exponent is negative. However, the type of the expression
that results is a little strange:
int1 int2 int1↑int2
integer integer variable real
integer const < 0 real
integer const ≥ 0 integer
in other words, the compiler will create an integer expression (by
producing successive multiplies) when it can do so. It cannot know
that an exponent variable will be >0, however, so it must assume real.
Sorry..... See Jim Low if you are confused about this.
V. WHAT TO DO
If your programs dont do a RELEASE or any exponentiation, you can probably
win by reloading. Otherwise, you must recompile. If you think you have
a bug, try compiling with SAIL.724[1,3] & loading with SAILW5[1,3]. If
your program works then, but doesn't work now (and the difficulty doesn't
stem from the changes mentioned here), then congratulations! You may indeed
have found a new SAIL bug. See the appropriate person(s). Summary of old
& new files:
OLD NEW
compiler SAIL.724 SAIL.DMP
segments SAISG5.SEG SAISG6.SEG
SAISG5.OLD (for DCS)
GLBS11.SEG GLBSG6.SEG
lower rel file SAILW5.REL SAILOW.REL -- /Y to loader will do
(load first to att. GLBL11.REL GLBLOW.REL
to segment)
libraries LIBSA5.REL LIBSA6.REL
HLBSA5.REL HLBSA6.REL
Thus, to use the old(er) SAIL to get the effect of TRY FOO.SAI, type:
R SAIL.724<cr>
FOO←FOO<cr>
↑C
R LOADER<cr>
SAILW5[1,3],FOO<alt>
START<cr>
*25 July 1973 FINGER LES
To get a listing of the full names of all users currently logged in
and their locations, say "R FINGER" or just "FING". The latter
works without prior login, just like WHO. The column labelled "LR"
gives the number of minutes since the job was last run (blank if
less than 1).
If you say "FING <pn>" or "R FINGER ;<pn>" you will get information
only about jobs logged in with the given programmer name (1 to 3
characters).
*7 Aug 1973 SEND MAIL BH
If you SEND a message to a display (III or DataDisc) terminal,
the SEND program now examines the monitor tables for that
terminal to try to decide if the recipient is running a program,
such as E, which unnormalizes the page printer, thereby possibly
hiding or losing the message. If the page printer is not
normalized (any piece of paper or glass other than PP 0 active,
any console commands of the <esc> E, etc., family executed, or
the lines/glitch or glitches/page count not normal), the sender
is warned with a message including the ppn, job name, queue, etc.
This information may help in deciding whether or not to play it
safe by REEentering and changing the SEND to a MAIL. The only
display program I know of which is not caught by this scheme is
WHO on a DataDisc, but that's not too bad because the message
generally shows up when you exit.
Also, it is now possible to specify an expiration date for
NOTICE.TXT messages by typing the command in the form
MAIL * → date
where "date" is as in the REMIND command (just date, no time).
The message will be deleted at midnight of the specified date.
This is done by putting a delayed program request for a
program called EXPIRE in the reminder queue with you as the
requestor, so you'll be told about it by CANCEL. Note that
this feature is independent of the automatic deletion after
two weeks, which happens whether you specify an expiration
date or not.
*13 Aug 73 RCV BH
The Z option editor in RCV now allows <ctrl>D at the end of a line to
concatenate it with the next line, and <meta><cr> in the middle of a
line to break it in two pieces, as in E. In line insert mode, altmode
will leave line insert mode without inserting the text you were typing
on the line with the altmode (unlike <ctrl><cr> which inserts the text
and then leaves line insert mode.) Also, the editor is cleverer about
ignoring unknown break characters and about neatness of its output on
your display screen.
Also, there is a new option, ! (exclamation point), which saves
the current message and all remaining messages in the current file, and
then goes on to the next message file.
Also, when a message overflows the buffer, RCV will break it at
a line boundary (unless the line which overflows is incredibly long),
and you are alowed to edit it with the Z option.
SINGLE-LETTER TYPEIN (OPTIONS, Y OR N) MUST NOW BE FOLLOWED BY <CR>!
Accordingly, <cr> as an option again means S. In Y or N situations,
anything other than Y<cr> means no. (Lower case Y is ok.) Typing ? in
response to a question still does not require <cr>.
*14 Aug 1973 LOADER and RPG TVR
Several changes were made to the loader and RPG.
1. The loader has been speeded up by separating globals and locals
within the symbol table. The improvement will be noticable to those
who use many externals while it will be only marginally faster for
those using only one REL file.
Globals (i.e. externals) are now kept in the bottom of the
symbol table rather than interspersed with locals. This loses
information about with program the global came from, however
neither DDT nor RAID use this information. It seems to be a small
price to pay for the increase in speed.
2. A feature has been added to the loader to save a dump file when
loading is complete. This is invoked by the switch /DUMP. The name
given the the DMP file is that of the first REL files loaded
(excluding DDT) unless one is given explicitely as:
LOAD BAZ←FOO/DUMP
which loads the file FOO and saves it as BAZ.DMP.
3. A new switch /NOSAISEG suppresses the loading of the SAIL
segments and instead loads from the SAIL library. This is
recommended for programs sept on [1,3] as SAIL segments tend to
eventually become obsolete.
4. RPG will now accept negative arguments in loader switches, for
example: %-S.
5. The LOADER will now treat % as /.
If you have any problems, first try LOADER.OLD[1,3]. If that works
while the new one does not, please mail me (TVR) a note.
*14 Aug 1973 FIND DCS
New FIND up.
It is now a system command "FIND".
See FIND.TES[UP,DOC] for complete description.
The syntax has been changed to:
FIND [EXACTLY] key [ [IN] file], where brackets indicate options.
EXACTLY indicates the keyword search of old FIND -- character
for character match, with no template searching.
Otherwise, the template search will be carried out, as described
in the full documentation. The EXACTLY search is a little
faster.
Default file name is the current phone directory. The specification
PHONE will also yield this directory.
Unless you are using the default file, if the key is a multi-word
key, it must be delimited by " ... " or ` ... ', or separated
from the file name by "IN", which is not optional in this case.
Undelimited multi-word keys will have each string of one or more
spaces and tabs replaced by a single space, even in EXACTLY mode.
You can search for a delimited string with either kind of quote
in it by delimiting the string with the other kind (e.g.,
" ... ` ... ", or ` ... " ... '.
You can omit the closing "]" in a file name.
Examples:
FIND JMC
FIND ANY MCCARTHY
FIND ANY TARGET IN COMLIN.FAI
FIND ANY "TEMPLATE ... TARGET" COMLIN.FAI
FIND TARGET BYTE IN COMLIN.FAI
FIND LOMA VERDE
*14 Aug 73 PUB XGPUB RKJ
PUB files may be output on the XGP.
Fonts may be specified by using the FONT declaration. Its format is
FONT <fontid> <fontfilename>
where fontid is a single digit 1-9 or letter A-G (upper or lower case
are equivalent). Fontfilename is the name of the file on which the
font is stored. The default extension is FNT, the default PPN is
[XGP,SYS]. The only available device is the disk; no device field
may be specified. To select a font, turn on the character "%" (or
turn on some other character for its function). %<fontid> causes the
specified font to be used for subsequent output. %* has the effect
of undoing the previous font selection (one level only). If you
specify XGP output (either by DEVICE XGP or by /X in the command
string), you must specify at least one font with a FONT declaration.
Font 1 is used initially.
A font may also be selected in command mode with the command
SELECT <fontid>
which breaks and selects the font for the next text line. Font
selection obeys block structure. The effect of %* in the vicinity of
END's which imply font changes is undefined.
For the benefit of macros whose effect depends on whether or not
output is to the XGP, there is a read-only variable XCRIBL whose
value is TRUE iff output is to the XGP. FONT and % are no-ops (FONT
a time-consuming one) if output is not to the XGP.
The variable !XGPLFTMAR should be set to the desired left margin in
raster points; its default value is 200. The variable CHARW is used
as the multiplication factor to convert to XGP raster units those
variables (e.g., line width) which are specified in characters. Its
default value is 16.
PUB produces a file QQXGP.RPG containing XSPOOL parameters such
that executing the monitor command
XS @QQXGP.RPG
will list your output properly. The PUB variable !XGPCOMMANDS may
be set to include any extra switches, etc., you would like sent to
XSPOOL; the text in that variable will be included in the RPG file.
The XSPOOL command is loaded into your line editor if at a display.
The following PUB features are not available: multiple columns
and the ∞ feature. Use of these will not bomb out but
the results won't be what you wanted, either.
Note: PUB currently takes no notice of font heights. All vertical
spacing and vertical filling is done by line count.
*5 SEPT 73 NETWORK NETWRK TALKER TELNET FTP RPH
THE PROGRAMS 'FTP' AND 'T' (TELNET) ON [1,3] MAY NOW BE INVOKED BY
SYSTEM COMMANDS:
FTP RUNS THE PROGRAM 'FTP.DMP[1,3]'
TN RUNS THE PROGRAM 'T.DMP[1,3]'
TELNET RUNS THE PROGRAM 'T.DMP[1,3]'
YOU MAY FOLLOW THE COMMAND BY WHAT YOU WOULD NORMALLY TYPE TO THE
PROGRAM. THAT IS A SITE NAME AND THEN A COMMAND. IF YOU TYPE MORE
THAN THE SITE NAME YOU MUST FOLLOW IT BY A ";". IF YOU WISH TO TYPE
AN ALTMODE TO THE PROGRAM, YOU MAY USE $ (DOLLAR SIGN).
*5 Sept 1973 FONT conversion for XGP (FCOPY) TVR
FCOPY is a program to convert between different font formats. It
currently knows about font formats of Stanford, CMU and Xerox. It
will also give some information about a font, i.e. its height, width,
and its baseline. It will also print a sample on the XGP which
includes a table showing the correspondence to Stanford ASCII. It
takes input in the following form:
<command> :: = <output file>←<input file>{/<switch>} |
<input file>{/<switch>}
<switch> :: = INFO|SAMPLE|DISPLAY|FIX=<integer>|STANFORD|CMU|XEROX
FCOPY decides what conversion to make by the extension and may be
overridden with the switches: STANFORD, CMU, and XEROX, where the
default extension are FNT, KST and XRX, respectively. The default
extension is FNT and if no PPN is given, your area is tried first,
then [XGP,SYS]. Multiple switches are legal. For example:
R FCOPY;FOO←NGR25.KST/FIX=16/DISPLAY
Converts the CMU font NGR25 and makes a fixed width font called FOO.
The result is display on your terminal (if it is a Datadisc).
Available switches are:
DISPLAY Display font on Datadisc
SAMPLE Print sample on XGP
INFO Print information about file
FIX Make into fix width font, of specified width.
Report any suggestions or problems to TVR.
*18 Sept 1973 PUB Command in RPG FW
A "PUB" command has been installed in RPG which behaves like the
compile-class commands, but only for PUB files. All compile-class
commands except COMPILE now ignore PUB files as possible candidates.
Soon COMPILE will not work for PUB either, so users should get into
the habit of using the PUB command instead.
RPG has also been modified to not require a closing square bracket
whenever the thing following the PPN is anything but a comma or
identifier.
*25 SEP 1973 PUB Changes for XGP TES
To repair certain unpleasant bugs in the PUB font select mechanism,
it is undergoing a major overhaul. The main effect on your
manuscripts is this:
Font selection will be area-dependent. That is, if you say
%1 or SELECT 1 when you have done a PLACE HEADING, the current font
will be changed to 1 only for the HEADING area. When a block is
exited, the current font of every declared area will revert to its
setting when the block was entered. Font select controls directed
by PUB to the XGP will be more intelligent as well. This will
probably happen by the end of October, if not very soon.
-- Larry Tesler
*28 Sep 73 FILES command ME
New monitor command FILES gives you status of open files (just as
the WHO program does) without distroying your core image. The
command takes any of following forms:
FILES <job number>
FILES <filename>
FILES
The <job number> form prints the name and status of each file open
for the given job, where a zero <job number> means your own job.
The <filename> form prints all the references (by any jobs) to the
given file.
If the argument to FILES is a number in the range of legal job
numbers, then it will be assumed to be a job number. If it is a
number with three or more digits or is greater than the biggest job
number, then it is assumed to be a filename. A dot (".") or left
braket ("[") following a number also forces the number to be
interpreted as a filename. Filenames with spaces in the middle (or
at the beginning) cannot be typed to FILES. Explicit PPNs will
override the default PPN taken from your current ALIAS. If the
Programmer part of a PPN is omitted, the Programmer part of your
current ALIAS is used; in this case you must omit the comma in the
PPN. The closing right bracket ("]") after a PPN (or after a
Project when there is no Programmer) may be omitted.
If there are too many files open to print all their names at command
level, FILES prints as many as it can and then prints "...". In
this case, if you type just FILES with no argument, the previous
list of file references will continue.
If you give the FILES command with no argument when there is no file
list to continue, then a FILES 0 is done (i.e., files referenced by
your own job are listed).
When FILES is starting a new list of files, a blank line is printed
before the list of files, but when an old list is being continued,
no blank line is printed. Also, if the complete list is small
enough to be printed in its entirety, a blank line will follow the
list. Otherwise, "..." is printed after the part of the list that
fits.
The two numbers following a filename printed by FILES are,
respectively, the length of the file and the current pointer into
the file, both in record numbers. Some letters may follow the
second number and have the following significances:
W File is being written.
R File is being read.
RA File is open in Read-Alter mode.
E (after R or RA) End of file has been reached.
*29 Oct 1973 RAID FW
A few minor fixes and improvements have been made to RAID:
1) εX and εY now indicate whether the instruction skipped. This is
by means of an indicator at the top of the screen, like the "OK".
2) Line feed and backslash are now equivalent to greater than and
less than, respectively. This makes moving more convenient since
it isn't necessary to use the "top" key.
3) The initial program name selection is now reasonable even when
RAID isn't loaded first.
4) Initialization of search bounds is now more clever. The limits
are set to include the area from 140 to JOBFF or the bottom of
the symbol table, except that RAID itself will not be included
if it is loaded at either end of that area.
5) The display now gets refreshed properly when switching from III to
DD (sometimes a problem with saved core images).
6) The state of IOT-user mode is now saved and restored, and turned
off inside RAID, so debugging such programs will not execute
random hardware I/O instructions instead of displaying. (Note:
this does NOT mean you can now put breakpoints in spacewar modules
or user interrupt code.)
7) RAID now notices if the symbol table moves or changes size, and
attempts to do the right thing, hopefully avoiding dropping dead
with ILL MEM REFs and whatnot as it used to often do in that case.
8) The various indicators at the top of the screen have been scrunched
on Data Disc to single width, double height, since double width
mode is so unreliable.
Note to system hackers: The previously painful process of putting up the
DMP copy of RAID has been automated by a program called RAIDMP on CSP,SYS.
*31 Oct 1973 LOADER FW
Recent changes to the LOADER:
1) Block names are now loaded only if loading local symbols, since
they are of very little value other than for referencing symbols.
2) The left half of JOBHRL is no longer set up to the length of the
upper, since the system puts the write protect flag there.
3) The /= switch is available for RHT and anyone else who feels
horribly screwed by having all the globals grouped at the front
of the symbol table. The effect is to cause symbols to be loaded
as they used to, complete with searching the entire table when
looking up globals. This switch may have strange effects if it
appears after some files have been loaded.
*2 Nov 1973 EDFONT (XGP) TVR
EDFONT now accepts characters whose logical width is less than its
physical width, thus better italics and non-spacing characters are
now possible. The following example shows the difference between
logical and physical width. (See WIDTH.MSG[XGP,TVR] for change in
font file format).
***
*** **
** **
*** **
***
**
***
***
*******
***
***
***
***
***
***
**
**
***
***
** **
* **
* **
***
↑ ↑
Logical Physical
Width Width